package tools;

import java.util.Iterator;

import util.Memorier;


public class Matrix {
	
	protected DoubleVector[] mt;
	protected int ln;
	protected int cl;
	protected Memorier mem;

	public Matrix(int ln, int cl){
		
		this.ln = ln;
		this.cl = cl;
		mem = new Memorier();
		mem.addLongSize(2);
		
		mt = new DoubleVector[ ln];
		for(int i = 0; i < ln; i ++){
			mt[i] = new DoubleVector(cl);
		}
	}
	
	public void setElem(int i, int j, double value){
		mt[i].set(j, value);
	}

	public double getElem(int i, int j){
		return mt[i].get(j);
	}
	
	public DoubleVector getLine(int i){
		return (DoubleVector) mt[i].copy();
	}

	public DoubleVector getColumun(int i){
		DoubleVector c = new DoubleVector(ln);
		for(int j = 0; j < ln; j++)c.set(j, mt[j].get(i)); 
		return c;
	}
	
	public double memoryUsedB(){
		double m = mem.getUsedMemB();
		for(int i = 0; i < ln; i++) m += mt[i].memoryUsedB();	
		return m;
	}
	
	public double memoryUsedKB(){
		double m = mem.getUsedMemKB();
		for(int i = 0; i < ln; i++) m += mt[i].memoryUsedKB();	
		return m;
	}
	
	public double memoryUsedMB(){
		double m = mem.getUsedMemMB();
		for(int i = 0; i < ln; i++) m += mt[i].memoryUsedMB();	
		return m;
	}

}
